In video coder/decoder systems, a video encoder may code a source video sequence into a coded representation that has a smaller bit rate than does the source video and, thereby may achieve data compression. The encoder may code processed video data according to any of a variety of different coding techniques to achieve bandwidth compression. One common technique for data compression uses predictive coding techniques (e.g., temporal/motion predictive encoding). For example, some frames in a video stream may be coded independently (I-frames) and some other frames (e.g., P-frames or B-frames) may be coded using other frames as reference frames. P-frames may be coded with reference to a single previously coded frame and B-frames may be coded with reference to a pair of previously-coded frames, typically a frame that occurs prior to the B-frame in display order and another frame that occurs subsequently to the B-frame in display order. The resulting compressed sequence (bitstream) may be transmitted to a decoder via a channel. To recover the video data, the bitstream may be decompressed at the decoder, by inverting the coding processes performed by the encoder, yielding a received decoded video sequence. In some circumstances, the decoder may acknowledge received frames and report lost frames.
Modern coder/decoder systems often operate in processing environments in which the resources available for coding/decoding operations varies dynamically. Modern communications networks provide variable bandwidth channels to connect an encoder to a decoder. Further, processing resources available at an encoder or a decoder may be constrained by hardware limitations or power consumption objectives that limit the complexity of analytical operations that can be performed for coding or decoding operations. Accordingly, many modern coder/decoder systems employ a variety of techniques to constraint bandwidth consumption and/or conserve processing resources.
Video Resolution Adaptation (“VRA”) is one such a technique used in video coding/decoding systems to manage bandwidth and/or resource consumption within the coder/decoder system. VRA is a technique that alters the resolution of images prior to being coded for bandwidth conservation. For example, a camera may output video data to an encoder at a predetermined resolution (say, 960×720 pixels) but an encoder may reduce this resolution to a lower resolution (ex., 320×240 pixels) to meet a performance constraint. Reducing the resolution of the image effectively reduces its size for coding and, therefore, contributes to reduced bandwidth when the resulting image is coded. Similarly, a reduced resolution image also is less complex to code than a full resolution image.
When a decoder receives and decodes such an image, it will generate a recovered image with reduced resolution. If the image is rendered on a display device and expanded to fit a larger display area than the reduced size (ex., 320×240 pixels to 960×640 pixels), it will appear blurry and will be perceived as having lower quality. Alternatively, it might be displayed at a reduced size—a 320×240 pixel window on a 960×640 pixel display—but it also will be perceived as having low quality even though it may appear relatively sharper than the expanded version.
Accordingly, there is a need in the art for a video coder/decoder system that takes advantage of the bandwidth and resource conservation that VRA techniques can provide but still provide high image quality. There is a need in the art for a video coder/decoder system that allows images to be coded as low resolution images and be displayed at a decoder as if they were high resolution images.